GPS satellites broadcast signals enabling GPS receivers on the earth's surface to calculate position. GPS satellites transmit data along an L1 frequency and an L2 frequency. The L1 frequency is known as the course acquisition (C/A) code. The C/A code is available for civilian use and is a 1.023 MHz pseudorandom noise (PRN) code, which repeats its 1023 bits each millisecond. Each satellite transmits a unique PRN code so that GPS receivers can identify each satellite based on the PRN code received from a given satellite. 1,023 PRN codes exist, but presently only 32 PRN codes are used—one for each of the 32 GPS satellites in orbit.
FIG. 1a illustrates a typical process for determining position on the earth 14 via GPS. The satellites 10 orbit the earth 14 and constantly transmit PRN codes. Object 12 is located on or near the earth's surface and may include a vehicle, such as an airplane, automobile, motorcycle, ship, or train or a mobile device, such as a cell phone, smartphone, camera, computer, personal navigation device, or video game player. The object 12 is equipped with a GPS receiver that can receive and demodulate incoming GPS signals. In the example shown in FIG. 1a, at least four satellites 10 are used to determine the location of the object 12. The GPS receiver on object 12 utilizes the unique PRN code transmitted by each GPS satellite to determine parameters including (i) which signal the GPS receiver is receiving and (ii) at what time delay the GPS receiver is receiving each signal. With these parameters, the location of the object 12 may be determined.
In order to determine the delay for a received PRN code, a GPS receiver must correlate the received PRN code with its own locally generated copy (or replica) of the PRN code. The correlation process attempts to align the received PRN code with a locally generated replica PRN code, so that the GPS receiver can determine the time delay of the satellite's signal, which is used to calculate position. However, because the receiver does not know the code phase or Doppler information of the satellite signal, the correlation process typically requires thousands of correlations to be performed in order to determine a match.
FIG. 1b demonstrates a typical delay between a received GPS PRN code 20 and a replica PRN code 22. The offset 24 represents the delay that a GPS receiver calculates in order to correlate the replica PRN code 22 with the received GPS PRN code 20. To determine the correct code phase, a receiver typically tries all possible code phases of its replica PRN code 22 to determine a match. This process is typically performed by shifting the replica PRN code 22 through each possible 1,023 bits of code and correlating the replica PRN code 22 with the received GPS PRN code 20 at each shift. The GPS receiver then determines if there is a match after performing each of the correlations.
FIG. 2 illustrates an example of a typical correlation system for a GPS receiver. The correlation system 100 includes a PRN buffer 102, correlators 104, a local PRN code generator 106, accumulators 108, and memories 110. In operation, the correlation system 100 utilizes multiple correlators to compare bits of code from the received GPS PRN code stored in the PRN buffer 102 to bits of code from the replica PRN code produced by the local PRN code generator 106. The output of each correlator is stored in a separate memory 110.
PRN buffer 102 stores the PRN signal from the GPS satellite. In the example of FIG. 2, for each cycle, 1 bit of the GPS PRN code is input to each of the correlators 104. The correlators 104 also receive 64 bits of the replica PRN code from the local PRN code generator 106, with each correlator 104 receiving one bit. Each correlator 104 compares the same bit from the GPS PRN code to one bit from of the replica PRN code and outputs a result to an accumulator 108. In this example, at least 64 different memories 110 are used to store the outputs of the comparisons from the correlators 104.
Assuming the PRN codes are interpolated from 1,023 bits to 2,048 bits, the example of FIG. 2 would require 32 cycles to complete one epoch of replica PRN code. Each cycle produces a comparison of one bit of the GPS PRN code with 64 different bits of the replica PRN code. After one bit of the GPS PRN code has been compared with each bit in the epoch of replica PRN code, the next bit of the GPS PRN code is the input to the correlators 104 and compared with each bit of the replica PRN code. This process repeats until all 2,048 bits of the GPS PRN code have been utilized. The process employed by the correlation system 100 of FIG. 2 requires extensive amounts of memory to complete each correlation. Typically, at least one memory is required for each correlator.